package com.yunyao.dao.service.system.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yunyao.dao.mapper.FTempFieldMapper;
import com.yunyao.dao.model.FTempField;
import com.yunyao.dao.service.system.IFTempFieldService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 * 流程字段临时表 服务实现类
 * </p>
 *
 * @author xingjishuai
 * @since 2024-07-02
 */
@Service
public class FTempFieldServiceImpl extends ServiceImpl<FTempFieldMapper, FTempField> implements IFTempFieldService {

    /**
     * 根据流程实例ID模糊查询临时字段列表
     *
     * 本方法旨在通过流程实例ID的一部分来查找相关的临时字段这个功能对于在流程实例ID中
     * 使用前缀或其他部分标识进行快速检索特别有用
     *
     * @param processInstanceId 流程实例ID的一部分如果为空或空白，则返回空列表
     * @return 与给定流程实例ID部分相匹配的临时字段列表如果找不到任何匹配项，则返回空列表
     */
    @Override
    public List<FTempField> listByLikeProcessInstanceId(String processInstanceId) {
        // 检查输入参数是否为空或空白如果是，则直接返回空列表，避免执行不必要的查询
        if (StringUtils.isBlank(processInstanceId)) {
            return List.of();
        }
        // 构建查询条件，使用LambdaQueryWrapper简化查询条件的编写
        // 这里使用了JOOQ库的Lambda查询，提高代码的可读性和开发效率
        // likeRight方法表示右模糊匹配，即查找以processInstanceId结尾的所有记录
        LambdaQueryWrapper<FTempField> wrapper = new LambdaQueryWrapper<FTempField>()
                .likeRight(FTempField::getTempKey, processInstanceId);
        // 执行查询并返回结果列表
        return this.list(wrapper);
    }
}
